#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//
////size_t strlen(const char* str);
////
#include <string.h>
//int main()
//{
//	char arr1[] = "hello";
//	char arr2[] = { 'a','b','c' };
//	printf("%llu\n", strlen(arr1));
//	printf("%llu\n", strlen(arr1+1));
//	printf("%llu\n", strlen(arr2));
//
//	return 0;
//
//}
//
////char* strcpy(char* destination, const char* source);

///* strcpy example */
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char str1[] = "Sample String";
//	char str2[40];
//	char str3[40];
//	strcpy(str2, str1);
//	strcpy(str3, "Copy Successful");
//	printf("Str1: %s\nstr2: %s\nstr3: %s\n", str1, str2, str3);
//	return 0;
//}


/* strcat example */
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char str[80];
//	strcpy(str, "These ");
//	strcat(str, "Strings ");
//	strcat(str, "Are ");
//	strcat(str, "Concatenated.");
//	puts(str);
//	return 0;
//}

///* strcmp example */
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char str1[] = "abcd";
//	char str2[] = "ab";
//	char str3[] = "abedf";
//	char str4[] = "abcdr";
//
//	printf("%d\n", strcmp(str1, str2));
//	printf("%d\n", strcmp(str1, str3));
//	printf("%d\n", strcmp(str1, str4));
//
//	return 0;
//}

///* strncpy example */
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char str1[] = "To Be Or Not To Be**\0**";
//	char str2[30] = { 0 };
//	char str3[30] = { 0 };
//	char str4[50] = { 0 };
//
//	/* copy to sized buffer (overflow safe): */
//	strncpy(str2, str1, sizeof(str2));
//
//	/* partial copy (only 5 chars): */
//	strncpy(str3, str2, 5);
//	str3[5] = '\0';   /* null character manually added */
//
//	strncpy(str4, str1, 30);
//
//	puts(str1);
//	puts(str2);
//	puts(str3);
//	puts(str4);
//
//	return 0;
//}

///* strncat example */
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char str1[20];
//	char str2[20];
//	strcpy(str1, "To Be ");
//	strcpy(str2, "Or Not To Be");
//	strncat(str1, str2, 6);
//	puts(str1);
//	return 0;
//}

///* strstr example */
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//    char str[] = "This Is A Simple String";
//    char* pch;
//    pch = strstr(str, "Simple");
//    if (pch != NULL)
//        strncpy(pch, "Sample", 6);
//    printf("%s\n", pch);
//    puts(str);
//    return 0;
//}

///* strtok example */
//#include <string.h>
//#include<stdio.h>
//int main()
//{
//	char arr[] = "Alison@137.com";
//	char buf[200] = { 0 };//"Alison@137.com"
//	strcpy(buf, arr);
//	const char* p = "@.";
//	char* str = NULL;
//	for (str = strtok(buf, p); str != NULL; str = strtok(NULL, p))
//	{
//		printf("%s\n", str);
//	}
//	return 0;
//
//}

///* memcpy example */
//#include <stdio.h>
//#include <string.h>
//struct {
//	char name[40];
//	int age;
//} person, person_copy;
//int main()
//{
//	char myname[] = "Pierre de Fermat";
//	/* using memcpy to copy string: */
//	memcpy(person.name, myname, strlen(myname) + 1);
//	person.age = 46;
//	/* using memcpy to copy structure: */
//	memcpy(&person_copy, &person, sizeof(person));
//	printf("person_copy: %s, %d \n", person_copy.name, person_copy.age);
//	return 0;
//}

/* memcmp example */
#include <stdio.h>
#include <string.h>
int main()
{
	char buffer1[] = "DWgaOtP12df0";
	char buffer2[] = "DWGAOTP12DF0";
	int n;
	n = memcmp(buffer1, buffer2, sizeof(buffer1));
	if (n > 0) 
		printf("'%s' is greater than '%s'.\n", buffer1, buffer2);
	else if (n < 0) 
		printf("'%s' is less than '%s'.\n", buffer1, buffer2);
	else 
		printf("'%s' is the same as '%s'.\n", buffer1, buffer2);
	return 0;
}
